// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗  
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝  
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// -----------------------------------------------
//  
// This file is automatically generated 
// Please do not edit these files manually
// Run the following in the root of the repos:
//
// 		*NIX 		:	./build.sh codegen
// 		Windows 	:	build.bat codegen
//
// -----------------------------------------------
// ReSharper disable RedundantUsingDirective
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using Elasticsearch.Net;
using Elasticsearch.Net.Utf8Json;
using Elasticsearch.Net.Specification.CatApi;

// ReSharper disable RedundantBaseConstructorCall
// ReSharper disable UnusedTypeParameter
// ReSharper disable PartialMethodWithSinglePart
// ReSharper disable RedundantNameQualifier
namespace Nest
{
	///<summary>Descriptor for Aliases <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-alias.html</para></summary>
	public partial class CatAliasesDescriptor : RequestDescriptorBase<CatAliasesDescriptor, CatAliasesRequestParameters, ICatAliasesRequest>, ICatAliasesRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatAliases;
		///<summary>/_cat/aliases</summary>
		public CatAliasesDescriptor(): base()
		{
		}

		///<summary>/_cat/aliases/{name}</summary>
		///<param name = "name">Optional, accepts null</param>
		public CatAliasesDescriptor(Names name): base(r => r.Optional("name", name))
		{
		}

		// values part of the url path
		Names ICatAliasesRequest.Name => Self.RouteValues.Get<Names>("name");
		///<summary>A comma-separated list of alias names to return</summary>
		public CatAliasesDescriptor Name(Names name) => Assign(name, (a, v) => a.RouteValues.Optional("name", v));
		// Request parameters
		///<summary>Whether to expand wildcard expression to concrete indices that are open, closed or both.</summary>
		public CatAliasesDescriptor ExpandWildcards(ExpandWildcards? expandwildcards) => Qs("expand_wildcards", expandwildcards);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatAliasesDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatAliasesDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatAliasesDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatAliasesDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatAliasesDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatAliasesDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Allocation <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-allocation.html</para></summary>
	public partial class CatAllocationDescriptor : RequestDescriptorBase<CatAllocationDescriptor, CatAllocationRequestParameters, ICatAllocationRequest>, ICatAllocationRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatAllocation;
		///<summary>/_cat/allocation</summary>
		public CatAllocationDescriptor(): base()
		{
		}

		///<summary>/_cat/allocation/{node_id}</summary>
		///<param name = "nodeId">Optional, accepts null</param>
		public CatAllocationDescriptor(NodeIds nodeId): base(r => r.Optional("node_id", nodeId))
		{
		}

		// values part of the url path
		NodeIds ICatAllocationRequest.NodeId => Self.RouteValues.Get<NodeIds>("node_id");
		///<summary>A comma-separated list of node IDs or names to limit the returned information</summary>
		public CatAllocationDescriptor NodeId(NodeIds nodeId) => Assign(nodeId, (a, v) => a.RouteValues.Optional("node_id", v));
		// Request parameters
		///<summary>The unit in which to display byte values</summary>
		public CatAllocationDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatAllocationDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatAllocationDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatAllocationDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatAllocationDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatAllocationDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatAllocationDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatAllocationDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Count <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-count.html</para></summary>
	public partial class CatCountDescriptor : RequestDescriptorBase<CatCountDescriptor, CatCountRequestParameters, ICatCountRequest>, ICatCountRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatCount;
		///<summary>/_cat/count</summary>
		public CatCountDescriptor(): base()
		{
		}

		///<summary>/_cat/count/{index}</summary>
		///<param name = "index">Optional, accepts null</param>
		public CatCountDescriptor(Indices index): base(r => r.Optional("index", index))
		{
		}

		// values part of the url path
		Indices ICatCountRequest.Index => Self.RouteValues.Get<Indices>("index");
		///<summary>A comma-separated list of index names to limit the returned information</summary>
		public CatCountDescriptor Index(Indices index) => Assign(index, (a, v) => a.RouteValues.Optional("index", v));
		///<summary>a shortcut into calling Index(typeof(TOther))</summary>
		public CatCountDescriptor Index<TOther>()
			where TOther : class => Assign(typeof(TOther), (a, v) => a.RouteValues.Optional("index", (Indices)v));
		///<summary>A shortcut into calling Index(Indices.All)</summary>
		public CatCountDescriptor AllIndices() => Index(Indices.All);
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatCountDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatCountDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatCountDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatCountDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatCountDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Fielddata <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-fielddata.html</para></summary>
	public partial class CatFielddataDescriptor : RequestDescriptorBase<CatFielddataDescriptor, CatFielddataRequestParameters, ICatFielddataRequest>, ICatFielddataRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatFielddata;
		///<summary>/_cat/fielddata</summary>
		public CatFielddataDescriptor(): base()
		{
		}

		///<summary>/_cat/fielddata/{fields}</summary>
		///<param name = "fields">Optional, accepts null</param>
		public CatFielddataDescriptor(Fields fields): base(r => r.Optional("fields", fields))
		{
		}

		// values part of the url path
		Fields ICatFielddataRequest.Fields => Self.RouteValues.Get<Fields>("fields");
		///<summary>A comma-separated list of fields to return the fielddata size</summary>
		public CatFielddataDescriptor Fields(Fields fields) => Assign(fields, (a, v) => a.RouteValues.Optional("fields", v));
		///<summary>A comma-separated list of fields to return the fielddata size</summary>
		public CatFielddataDescriptor Fields<T>(params Expression<Func<T, object>>[] fields) => Assign(fields, (a, v) => a.RouteValues.Optional("fields", (Fields)v));
		// Request parameters
		///<summary>The unit in which to display byte values</summary>
		public CatFielddataDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatFielddataDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatFielddataDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatFielddataDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatFielddataDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatFielddataDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Health <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-health.html</para></summary>
	public partial class CatHealthDescriptor : RequestDescriptorBase<CatHealthDescriptor, CatHealthRequestParameters, ICatHealthRequest>, ICatHealthRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatHealth;
		// values part of the url path
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatHealthDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatHealthDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatHealthDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Set to false to disable timestamping</summary>
		public CatHealthDescriptor IncludeTimestamp(bool? includetimestamp = true) => Qs("ts", includetimestamp);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatHealthDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatHealthDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Help <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat.html</para></summary>
	public partial class CatHelpDescriptor : RequestDescriptorBase<CatHelpDescriptor, CatHelpRequestParameters, ICatHelpRequest>, ICatHelpRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatHelp;
		// values part of the url path
		// Request parameters
		///<summary>Return help information</summary>
		public CatHelpDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatHelpDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
	}

	///<summary>Descriptor for Indices <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-indices.html</para></summary>
	public partial class CatIndicesDescriptor : RequestDescriptorBase<CatIndicesDescriptor, CatIndicesRequestParameters, ICatIndicesRequest>, ICatIndicesRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatIndices;
		///<summary>/_cat/indices</summary>
		public CatIndicesDescriptor(): base()
		{
		}

		///<summary>/_cat/indices/{index}</summary>
		///<param name = "index">Optional, accepts null</param>
		public CatIndicesDescriptor(Indices index): base(r => r.Optional("index", index))
		{
		}

		// values part of the url path
		Indices ICatIndicesRequest.Index => Self.RouteValues.Get<Indices>("index");
		///<summary>A comma-separated list of index names to limit the returned information</summary>
		public CatIndicesDescriptor Index(Indices index) => Assign(index, (a, v) => a.RouteValues.Optional("index", v));
		///<summary>a shortcut into calling Index(typeof(TOther))</summary>
		public CatIndicesDescriptor Index<TOther>()
			where TOther : class => Assign(typeof(TOther), (a, v) => a.RouteValues.Optional("index", (Indices)v));
		///<summary>A shortcut into calling Index(Indices.All)</summary>
		public CatIndicesDescriptor AllIndices() => Index(Indices.All);
		// Request parameters
		///<summary>The unit in which to display byte values</summary>
		public CatIndicesDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>Whether to expand wildcard expression to concrete indices that are open, closed or both.</summary>
		public CatIndicesDescriptor ExpandWildcards(ExpandWildcards? expandwildcards) => Qs("expand_wildcards", expandwildcards);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatIndicesDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatIndicesDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>A health status ("green", "yellow", or "red" to filter only indices matching the specified health status</summary>
		public CatIndicesDescriptor Health(Health? health) => Qs("health", health);
		///<summary>Return help information</summary>
		public CatIndicesDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>If set to true segment stats will include stats for segments that are not currently loaded into memory</summary>
		public CatIndicesDescriptor IncludeUnloadedSegments(bool? includeunloadedsegments = true) => Qs("include_unloaded_segments", includeunloadedsegments);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatIndicesDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatIndicesDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Set to true to return stats only for primary shards</summary>
		public CatIndicesDescriptor Pri(bool? pri = true) => Qs("pri", pri);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatIndicesDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatIndicesDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Master <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-master.html</para></summary>
	public partial class CatMasterDescriptor : RequestDescriptorBase<CatMasterDescriptor, CatMasterRequestParameters, ICatMasterRequest>, ICatMasterRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatMaster;
		// values part of the url path
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatMasterDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatMasterDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatMasterDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatMasterDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatMasterDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatMasterDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatMasterDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for DataFrameAnalytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
	public partial class CatDataFrameAnalyticsDescriptor : RequestDescriptorBase<CatDataFrameAnalyticsDescriptor, CatDataFrameAnalyticsRequestParameters, ICatDataFrameAnalyticsRequest>, ICatDataFrameAnalyticsRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatDataFrameAnalytics;
		///<summary>/_cat/ml/data_frame/analytics</summary>
		public CatDataFrameAnalyticsDescriptor(): base()
		{
		}

		///<summary>/_cat/ml/data_frame/analytics/{id}</summary>
		///<param name = "id">Optional, accepts null</param>
		public CatDataFrameAnalyticsDescriptor(Id id): base(r => r.Optional("id", id))
		{
		}

		// values part of the url path
		Id ICatDataFrameAnalyticsRequest.Id => Self.RouteValues.Get<Id>("id");
		///<summary>The ID of the data frame analytics to fetch</summary>
		public CatDataFrameAnalyticsDescriptor Id(Id id) => Assign(id, (a, v) => a.RouteValues.Optional("id", v));
		// Request parameters
		///<summary>Whether to ignore if a wildcard expression matches no configs. (This includes `_all` string or when no configs have been specified)</summary>
		public CatDataFrameAnalyticsDescriptor AllowNoMatch(bool? allownomatch = true) => Qs("allow_no_match", allownomatch);
		///<summary>The unit in which to display byte values</summary>
		public CatDataFrameAnalyticsDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatDataFrameAnalyticsDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatDataFrameAnalyticsDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatDataFrameAnalyticsDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatDataFrameAnalyticsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatDataFrameAnalyticsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Datafeeds <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html</para></summary>
	public partial class CatDatafeedsDescriptor : RequestDescriptorBase<CatDatafeedsDescriptor, CatDatafeedsRequestParameters, ICatDatafeedsRequest>, ICatDatafeedsRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatDatafeeds;
		///<summary>/_cat/ml/datafeeds</summary>
		public CatDatafeedsDescriptor(): base()
		{
		}

		///<summary>/_cat/ml/datafeeds/{datafeed_id}</summary>
		///<param name = "datafeedId">Optional, accepts null</param>
		public CatDatafeedsDescriptor(Id datafeedId): base(r => r.Optional("datafeed_id", datafeedId))
		{
		}

		// values part of the url path
		Id ICatDatafeedsRequest.DatafeedId => Self.RouteValues.Get<Id>("datafeed_id");
		///<summary>The ID of the datafeeds stats to fetch</summary>
		public CatDatafeedsDescriptor DatafeedId(Id datafeedId) => Assign(datafeedId, (a, v) => a.RouteValues.Optional("datafeed_id", v));
		// Request parameters
		///<summary>Whether to ignore if a wildcard expression matches no datafeeds. (This includes `_all` string or when no datafeeds have been specified)</summary>		[Obsolete("Scheduled to be removed in 7.0, deprecated")]
		public CatDatafeedsDescriptor AllowNoDatafeeds(bool? allownodatafeeds = true) => Qs("allow_no_datafeeds", allownodatafeeds);
		///<summary>Whether to ignore if a wildcard expression matches no datafeeds. (This includes `_all` string or when no datafeeds have been specified)</summary>
		public CatDatafeedsDescriptor AllowNoMatch(bool? allownomatch = true) => Qs("allow_no_match", allownomatch);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatDatafeedsDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatDatafeedsDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatDatafeedsDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatDatafeedsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatDatafeedsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Jobs <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-anomaly-detectors.html</para></summary>
	public partial class CatJobsDescriptor : RequestDescriptorBase<CatJobsDescriptor, CatJobsRequestParameters, ICatJobsRequest>, ICatJobsRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatJobs;
		///<summary>/_cat/ml/anomaly_detectors</summary>
		public CatJobsDescriptor(): base()
		{
		}

		///<summary>/_cat/ml/anomaly_detectors/{job_id}</summary>
		///<param name = "jobId">Optional, accepts null</param>
		public CatJobsDescriptor(Id jobId): base(r => r.Optional("job_id", jobId))
		{
		}

		// values part of the url path
		Id ICatJobsRequest.JobId => Self.RouteValues.Get<Id>("job_id");
		///<summary>The ID of the jobs stats to fetch</summary>
		public CatJobsDescriptor JobId(Id jobId) => Assign(jobId, (a, v) => a.RouteValues.Optional("job_id", v));
		// Request parameters
		///<summary>Whether to ignore if a wildcard expression matches no jobs. (This includes `_all` string or when no jobs have been specified)</summary>		[Obsolete("Scheduled to be removed in 7.0, deprecated")]
		public CatJobsDescriptor AllowNoJobs(bool? allownojobs = true) => Qs("allow_no_jobs", allownojobs);
		///<summary>Whether to ignore if a wildcard expression matches no jobs. (This includes `_all` string or when no jobs have been specified)</summary>
		public CatJobsDescriptor AllowNoMatch(bool? allownomatch = true) => Qs("allow_no_match", allownomatch);
		///<summary>The unit in which to display byte values</summary>
		public CatJobsDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatJobsDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatJobsDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatJobsDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatJobsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatJobsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for TrainedModels <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-trained-model.html</para></summary>
	public partial class CatTrainedModelsDescriptor : RequestDescriptorBase<CatTrainedModelsDescriptor, CatTrainedModelsRequestParameters, ICatTrainedModelsRequest>, ICatTrainedModelsRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatTrainedModels;
		///<summary>/_cat/ml/trained_models</summary>
		public CatTrainedModelsDescriptor(): base()
		{
		}

		///<summary>/_cat/ml/trained_models/{model_id}</summary>
		///<param name = "modelId">Optional, accepts null</param>
		public CatTrainedModelsDescriptor(Id modelId): base(r => r.Optional("model_id", modelId))
		{
		}

		// values part of the url path
		Id ICatTrainedModelsRequest.ModelId => Self.RouteValues.Get<Id>("model_id");
		///<summary>The ID of the trained models stats to fetch</summary>
		public CatTrainedModelsDescriptor ModelId(Id modelId) => Assign(modelId, (a, v) => a.RouteValues.Optional("model_id", v));
		// Request parameters
		///<summary>Whether to ignore if a wildcard expression matches no trained models. (This includes `_all` string or when no trained models have been specified)</summary>
		public CatTrainedModelsDescriptor AllowNoMatch(bool? allownomatch = true) => Qs("allow_no_match", allownomatch);
		///<summary>The unit in which to display byte values</summary>
		public CatTrainedModelsDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatTrainedModelsDescriptor Format(string format) => Qs("format", format);
		///<summary>skips a number of trained models</summary>
		public CatTrainedModelsDescriptor From(int? from) => Qs("from", from);
		///<summary>Comma-separated list of column names to display</summary>
		public CatTrainedModelsDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatTrainedModelsDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>specifies a max number of trained models to get</summary>
		public CatTrainedModelsDescriptor Size(int? size) => Qs("size", size);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatTrainedModelsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatTrainedModelsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for NodeAttributes <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-nodeattrs.html</para></summary>
	public partial class CatNodeAttributesDescriptor : RequestDescriptorBase<CatNodeAttributesDescriptor, CatNodeAttributesRequestParameters, ICatNodeAttributesRequest>, ICatNodeAttributesRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatNodeAttributes;
		// values part of the url path
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatNodeAttributesDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatNodeAttributesDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatNodeAttributesDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatNodeAttributesDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatNodeAttributesDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatNodeAttributesDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatNodeAttributesDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Nodes <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-nodes.html</para></summary>
	public partial class CatNodesDescriptor : RequestDescriptorBase<CatNodesDescriptor, CatNodesRequestParameters, ICatNodesRequest>, ICatNodesRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatNodes;
		// values part of the url path
		// Request parameters
		///<summary>The unit in which to display byte values</summary>
		public CatNodesDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatNodesDescriptor Format(string format) => Qs("format", format);
		///<summary>Return the full node ID instead of the shortened version (default: false)</summary>
		public CatNodesDescriptor FullId(bool? fullid = true) => Qs("full_id", fullid);
		///<summary>Comma-separated list of column names to display</summary>
		public CatNodesDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatNodesDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatNodesDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatNodesDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatNodesDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for PendingTasks <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-pending-tasks.html</para></summary>
	public partial class CatPendingTasksDescriptor : RequestDescriptorBase<CatPendingTasksDescriptor, CatPendingTasksRequestParameters, ICatPendingTasksRequest>, ICatPendingTasksRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatPendingTasks;
		// values part of the url path
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatPendingTasksDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatPendingTasksDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatPendingTasksDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatPendingTasksDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatPendingTasksDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatPendingTasksDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatPendingTasksDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Plugins <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-plugins.html</para></summary>
	public partial class CatPluginsDescriptor : RequestDescriptorBase<CatPluginsDescriptor, CatPluginsRequestParameters, ICatPluginsRequest>, ICatPluginsRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatPlugins;
		// values part of the url path
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatPluginsDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatPluginsDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatPluginsDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatPluginsDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatPluginsDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatPluginsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatPluginsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Recovery <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-recovery.html</para></summary>
	public partial class CatRecoveryDescriptor : RequestDescriptorBase<CatRecoveryDescriptor, CatRecoveryRequestParameters, ICatRecoveryRequest>, ICatRecoveryRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatRecovery;
		///<summary>/_cat/recovery</summary>
		public CatRecoveryDescriptor(): base()
		{
		}

		///<summary>/_cat/recovery/{index}</summary>
		///<param name = "index">Optional, accepts null</param>
		public CatRecoveryDescriptor(Indices index): base(r => r.Optional("index", index))
		{
		}

		// values part of the url path
		Indices ICatRecoveryRequest.Index => Self.RouteValues.Get<Indices>("index");
		///<summary>Comma-separated list or wildcard expression of index names to limit the returned information</summary>
		public CatRecoveryDescriptor Index(Indices index) => Assign(index, (a, v) => a.RouteValues.Optional("index", v));
		///<summary>a shortcut into calling Index(typeof(TOther))</summary>
		public CatRecoveryDescriptor Index<TOther>()
			where TOther : class => Assign(typeof(TOther), (a, v) => a.RouteValues.Optional("index", (Indices)v));
		///<summary>A shortcut into calling Index(Indices.All)</summary>
		public CatRecoveryDescriptor AllIndices() => Index(Indices.All);
		// Request parameters
		///<summary>If `true`, the response only includes ongoing shard recoveries</summary>
		public CatRecoveryDescriptor ActiveOnly(bool? activeonly = true) => Qs("active_only", activeonly);
		///<summary>The unit in which to display byte values</summary>
		public CatRecoveryDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>If `true`, the response includes detailed information about shard recoveries</summary>
		public CatRecoveryDescriptor Detailed(bool? detailed = true) => Qs("detailed", detailed);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatRecoveryDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatRecoveryDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatRecoveryDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatRecoveryDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatRecoveryDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Repositories <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-repositories.html</para></summary>
	public partial class CatRepositoriesDescriptor : RequestDescriptorBase<CatRepositoriesDescriptor, CatRepositoriesRequestParameters, ICatRepositoriesRequest>, ICatRepositoriesRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatRepositories;
		// values part of the url path
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatRepositoriesDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatRepositoriesDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatRepositoriesDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node</summary>
		public CatRepositoriesDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatRepositoriesDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatRepositoriesDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatRepositoriesDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Segments <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-segments.html</para></summary>
	public partial class CatSegmentsDescriptor : RequestDescriptorBase<CatSegmentsDescriptor, CatSegmentsRequestParameters, ICatSegmentsRequest>, ICatSegmentsRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatSegments;
		///<summary>/_cat/segments</summary>
		public CatSegmentsDescriptor(): base()
		{
		}

		///<summary>/_cat/segments/{index}</summary>
		///<param name = "index">Optional, accepts null</param>
		public CatSegmentsDescriptor(Indices index): base(r => r.Optional("index", index))
		{
		}

		// values part of the url path
		Indices ICatSegmentsRequest.Index => Self.RouteValues.Get<Indices>("index");
		///<summary>A comma-separated list of index names to limit the returned information</summary>
		public CatSegmentsDescriptor Index(Indices index) => Assign(index, (a, v) => a.RouteValues.Optional("index", v));
		///<summary>a shortcut into calling Index(typeof(TOther))</summary>
		public CatSegmentsDescriptor Index<TOther>()
			where TOther : class => Assign(typeof(TOther), (a, v) => a.RouteValues.Optional("index", (Indices)v));
		///<summary>A shortcut into calling Index(Indices.All)</summary>
		public CatSegmentsDescriptor AllIndices() => Index(Indices.All);
		// Request parameters
		///<summary>The unit in which to display byte values</summary>
		public CatSegmentsDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatSegmentsDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatSegmentsDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatSegmentsDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatSegmentsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatSegmentsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Shards <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-shards.html</para></summary>
	public partial class CatShardsDescriptor : RequestDescriptorBase<CatShardsDescriptor, CatShardsRequestParameters, ICatShardsRequest>, ICatShardsRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatShards;
		///<summary>/_cat/shards</summary>
		public CatShardsDescriptor(): base()
		{
		}

		///<summary>/_cat/shards/{index}</summary>
		///<param name = "index">Optional, accepts null</param>
		public CatShardsDescriptor(Indices index): base(r => r.Optional("index", index))
		{
		}

		// values part of the url path
		Indices ICatShardsRequest.Index => Self.RouteValues.Get<Indices>("index");
		///<summary>A comma-separated list of index names to limit the returned information</summary>
		public CatShardsDescriptor Index(Indices index) => Assign(index, (a, v) => a.RouteValues.Optional("index", v));
		///<summary>a shortcut into calling Index(typeof(TOther))</summary>
		public CatShardsDescriptor Index<TOther>()
			where TOther : class => Assign(typeof(TOther), (a, v) => a.RouteValues.Optional("index", (Indices)v));
		///<summary>A shortcut into calling Index(Indices.All)</summary>
		public CatShardsDescriptor AllIndices() => Index(Indices.All);
		// Request parameters
		///<summary>The unit in which to display byte values</summary>
		public CatShardsDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatShardsDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatShardsDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatShardsDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatShardsDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatShardsDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatShardsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatShardsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Snapshots <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-snapshots.html</para></summary>
	public partial class CatSnapshotsDescriptor : RequestDescriptorBase<CatSnapshotsDescriptor, CatSnapshotsRequestParameters, ICatSnapshotsRequest>, ICatSnapshotsRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatSnapshots;
		///<summary>/_cat/snapshots</summary>
		public CatSnapshotsDescriptor(): base()
		{
		}

		///<summary>/_cat/snapshots/{repository}</summary>
		///<param name = "repository">Optional, accepts null</param>
		public CatSnapshotsDescriptor(Names repository): base(r => r.Optional("repository", repository))
		{
		}

		// values part of the url path
		Names ICatSnapshotsRequest.RepositoryName => Self.RouteValues.Get<Names>("repository");
		///<summary>Name of repository from which to fetch the snapshot information</summary>
		public CatSnapshotsDescriptor RepositoryName(Names repository) => Assign(repository, (a, v) => a.RouteValues.Optional("repository", v));
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatSnapshotsDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatSnapshotsDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatSnapshotsDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Set to true to ignore unavailable snapshots</summary>
		public CatSnapshotsDescriptor IgnoreUnavailable(bool? ignoreunavailable = true) => Qs("ignore_unavailable", ignoreunavailable);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatSnapshotsDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatSnapshotsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatSnapshotsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Tasks <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/tasks.html</para></summary>
	public partial class CatTasksDescriptor : RequestDescriptorBase<CatTasksDescriptor, CatTasksRequestParameters, ICatTasksRequest>, ICatTasksRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatTasks;
		// values part of the url path
		// Request parameters
		///<summary>A comma-separated list of actions that should be returned. Leave empty to return all.</summary>
		public CatTasksDescriptor Actions(params string[] actions) => Qs("actions", actions);
		///<summary>Return detailed task information (default: false)</summary>
		public CatTasksDescriptor Detailed(bool? detailed = true) => Qs("detailed", detailed);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatTasksDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatTasksDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatTasksDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes</summary>
		public CatTasksDescriptor NodeId(params string[] nodeid) => Qs("node_id", nodeid);
		///<summary>Return tasks with specified parent task id. Set to -1 to return all.</summary>
		public CatTasksDescriptor ParentTask(long? parenttask) => Qs("parent_task", parenttask);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatTasksDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatTasksDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Templates <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-templates.html</para></summary>
	public partial class CatTemplatesDescriptor : RequestDescriptorBase<CatTemplatesDescriptor, CatTemplatesRequestParameters, ICatTemplatesRequest>, ICatTemplatesRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatTemplates;
		///<summary>/_cat/templates</summary>
		public CatTemplatesDescriptor(): base()
		{
		}

		///<summary>/_cat/templates/{name}</summary>
		///<param name = "name">Optional, accepts null</param>
		public CatTemplatesDescriptor(Name name): base(r => r.Optional("name", name))
		{
		}

		// values part of the url path
		Name ICatTemplatesRequest.Name => Self.RouteValues.Get<Name>("name");
		///<summary>A pattern that returned template names must match</summary>
		public CatTemplatesDescriptor Name(Name name) => Assign(name, (a, v) => a.RouteValues.Optional("name", v));
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatTemplatesDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatTemplatesDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatTemplatesDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatTemplatesDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatTemplatesDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatTemplatesDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatTemplatesDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for ThreadPool <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-thread-pool.html</para></summary>
	public partial class CatThreadPoolDescriptor : RequestDescriptorBase<CatThreadPoolDescriptor, CatThreadPoolRequestParameters, ICatThreadPoolRequest>, ICatThreadPoolRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatThreadPool;
		///<summary>/_cat/thread_pool</summary>
		public CatThreadPoolDescriptor(): base()
		{
		}

		///<summary>/_cat/thread_pool/{thread_pool_patterns}</summary>
		///<param name = "threadPoolPatterns">Optional, accepts null</param>
		public CatThreadPoolDescriptor(Names threadPoolPatterns): base(r => r.Optional("thread_pool_patterns", threadPoolPatterns))
		{
		}

		// values part of the url path
		Names ICatThreadPoolRequest.ThreadPoolPatterns => Self.RouteValues.Get<Names>("thread_pool_patterns");
		///<summary>A comma-separated list of regular-expressions to filter the thread pools in the output</summary>
		public CatThreadPoolDescriptor ThreadPoolPatterns(Names threadPoolPatterns) => Assign(threadPoolPatterns, (a, v) => a.RouteValues.Optional("thread_pool_patterns", v));
		// Request parameters
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatThreadPoolDescriptor Format(string format) => Qs("format", format);
		///<summary>Comma-separated list of column names to display</summary>
		public CatThreadPoolDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatThreadPoolDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
		public CatThreadPoolDescriptor Local(bool? local = true) => Qs("local", local);
		///<summary>Explicit operation timeout for connection to master node</summary>
		public CatThreadPoolDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatThreadPoolDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatThreadPoolDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}

	///<summary>Descriptor for Transforms <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-transforms.html</para></summary>
	public partial class CatTransformsDescriptor : RequestDescriptorBase<CatTransformsDescriptor, CatTransformsRequestParameters, ICatTransformsRequest>, ICatTransformsRequest
	{
		internal override ApiUrls ApiUrls => ApiUrlsLookups.CatTransforms;
		///<summary>/_cat/transforms</summary>
		public CatTransformsDescriptor(): base()
		{
		}

		///<summary>/_cat/transforms/{transform_id}</summary>
		///<param name = "transformId">Optional, accepts null</param>
		public CatTransformsDescriptor(Id transformId): base(r => r.Optional("transform_id", transformId))
		{
		}

		// values part of the url path
		Id ICatTransformsRequest.TransformId => Self.RouteValues.Get<Id>("transform_id");
		///<summary>The id of the transform for which to get stats. '_all' or '*' implies all transforms</summary>
		public CatTransformsDescriptor TransformId(Id transformId) => Assign(transformId, (a, v) => a.RouteValues.Optional("transform_id", v));
		// Request parameters
		///<summary>Whether to ignore if a wildcard expression matches no transforms. (This includes `_all` string or when no transforms have been specified)</summary>
		public CatTransformsDescriptor AllowNoMatch(bool? allownomatch = true) => Qs("allow_no_match", allownomatch);
		///<summary>a short version of the Accept header, e.g. json, yaml</summary>
		public CatTransformsDescriptor Format(string format) => Qs("format", format);
		///<summary>skips a number of transform configs, defaults to 0</summary>
		public CatTransformsDescriptor From(int? from) => Qs("from", from);
		///<summary>Comma-separated list of column names to display</summary>
		public CatTransformsDescriptor Headers(params string[] headers) => Qs("h", headers);
		///<summary>Return help information</summary>
		public CatTransformsDescriptor Help(bool? help = true) => Qs("help", help);
		///<summary>specifies a max number of transforms to get, defaults to 100</summary>
		public CatTransformsDescriptor Size(int? size) => Qs("size", size);
		///<summary>Comma-separated list of column names or column aliases to sort by</summary>
		public CatTransformsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
		///<summary>Verbose mode. Display column headers</summary>
		public CatTransformsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
	}
}